package com.wjw.java.basic.types_;

/**
 * 1byte(字节) = 8bit(位)
 *              [][][][][][][][]
 *
 * 1024Byte(字节) = 1KB
 * 1024KB = 1MB
 * 1024MB = 1GB
 * 1024GB = 1TB
 * --------------------------------------------------------------------------------------
 * 1.基本数据类型
 * (整数类型)：byte[1字节]     -128 ~ 127
 *            short[2字节]    -32768 ~ 32767
 *            int[4字节]
 *            long[8字节]
 * 注：
 * java的整数型常量(具体值)默认为int类型,声明long型常量需在后面加l或L
 * 将long类型的值赋值给int类型,编译器会报错,精度会丢失,如:int a = 100l;
 * 报错原因：因为将8字节的long类型数据,赋值给4字节的int类型,会造成精度丢失,改成long a = 100l;即可
 *
 * (浮点类型)：float[4字节]
 *            double[8字节]
 * 注:
 * java的浮点型常量(具体值)默认为double类型,声明float型常量需在后面加f或F
 * 将double类型的值赋值给float类型,编译器会报错,精度会丢失,如:float a = 10.2;
 * 报错原因：因为将8字节的double类型数据,赋值给4字节的float类型,会造成精度丢失,改成float a = 10.2F;即可
 *
 * (字符型)：char[2字节]
 * (布尔型)：boolean[1字节]
 * --------------------------------------------------------------------------------------
 * 2.引用数据类型：
 * String、class、interface、数组[]...
 * --------------------------------------------------------------------------------------
 */
public class BasicTypes {
    public static void main(String[] args) {
        //关于double类型的坑
        double a = 2.7;
        double b = 8.1 / 3; //经过计算后,得出来的是一个近似2.7的值
        double c = 2.7;
        System.out.println(a); //2.7
        System.out.println(b); //2.6999999999999997
        System.out.println(a == b);//false
        System.out.println(a == c);//true
    }
}
